
IAR=IntActReg(Y_channels,dgsp,M,0,FE,NL);%
IAR_Cl=IntActReg(Y_channels,dgsp,M,0,FE,NL,'cluster' );%

n=size(M,2)/K;

switch estimator
    case {'OLS'}
  
Beta_Cl_I=[];Beta_Cl_F=[];Beta_Cl_C=[];Beta_Cl_U=[];
for i=1:n
    
 Beta_Cl_I=[Beta_Cl_I;IAR_Cl.ClusterReg{1}(i+1,1);IAR_Cl.ClusterReg{1}(i+1,3)];
 Beta_Cl_F=[Beta_Cl_F;IAR_Cl.ClusterReg{2}(i+1,1);IAR_Cl.ClusterReg{2}(i+1,3)];
 Beta_Cl_C=[Beta_Cl_C;IAR_Cl.ClusterReg{3}(i+1,1);IAR_Cl.ClusterReg{3}(i+1,3)];
 Beta_Cl_U=[Beta_Cl_U;IAR_Cl.ClusterReg{4}(i+1,1);IAR_Cl.ClusterReg{4}(i+1,3)];
 Beta_Cl=[Beta_Cl_I,Beta_Cl_F,Beta_Cl_C,Beta_Cl_U];
 %Beta_Cl=format('bank')
end

switch channel
    case {'all'}
        display(Beta_Cl)
    case {'betaU'}
        display(Beta_Cl_U)
end
 
 
    case {'GLS'}
 % GLS Estimation 
uI=IAR.u(:,1);
uF=IAR.u(:,2);
uC=IAR.u(:,3);
uU=IAR.u(:,4);
uIm=vec2mat(uI,T,K)';
uFm=vec2mat(uF,T,K)';
uCm=vec2mat(uC,T,K)';
uUm=vec2mat(uU,T,K)';
varuI=std(uIm);%weight with standard deviation instead of variance
varuF=std(uFm);%
varuC=std(uCm);%
varuU=std(uUm);%
varuIm=ones(T,1)*varuI;
varuFm=ones(T,1)*varuF;
varuCm=ones(T,1)*varuC;
varuUm=ones(T,1)*varuU;
varuIv=varuIm(:);
varuFv=varuFm(:);
varuCv=varuCm(:);
varuUv=varuUm(:);



I_channel=(dgsp(:)-dspi(:))./varuIv;
F_channel=(dspi(:)-ddsi(:))./varuFv;
C_channel=(ddsi(:)-dc(:))./varuCv;
U_channel=dc(:)./varuUv;

I_dgsp=dgsp./varuIm;
F_dgsp=dgsp./varuFm;
C_dgsp=dgsp./varuCm;
U_dgsp=dgsp./varuUm;

iarI_Cl=IntActReg(I_channel,I_dgsp,M,0,FE,NL,'cluster');%
iarF_Cl=IntActReg(F_channel,F_dgsp,M,0,FE,NL,'cluster');%
iarC_Cl=IntActReg(C_channel,C_dgsp,M,0,FE,NL,'cluster');%
iarU_Cl=IntActReg(U_channel,U_dgsp,M,0,FE,NL,'cluster');%

Beta_Cl_I_GLS=[]; Beta_Cl_F_GLS=[];Beta_Cl_C_GLS=[]; Beta_Cl_U_GLS=[];

for i=1:n
    
 Beta_Cl_I_GLS=[Beta_Cl_I_GLS;iarI_Cl.ClusterReg{1}(i+1,1);iarI_Cl.ClusterReg{1}(i+1,3)];
 Beta_Cl_F_GLS=[Beta_Cl_F_GLS;iarF_Cl.ClusterReg{1}(i+1,1);iarF_Cl.ClusterReg{1}(i+1,3)];
 Beta_Cl_C_GLS=[Beta_Cl_C_GLS;iarC_Cl.ClusterReg{1}(i+1,1);iarC_Cl.ClusterReg{1}(i+1,3)];
 Beta_Cl_U_GLS=[Beta_Cl_U_GLS;iarU_Cl.ClusterReg{1}(i+1,1);iarU_Cl.ClusterReg{1}(i+1,3)];
 Beta_Cl_GLS=[Beta_Cl_I_GLS,Beta_Cl_F_GLS,Beta_Cl_C_GLS,Beta_Cl_U_GLS];
 
end
 
 switch channel
    case {'all'}
        display(Beta_Cl_GLS)
    case {'betaU'}
        display(Beta_Cl_U_GLS)
end
 
end
